A variety of different standards and technologies may be employed to communicate information between computers and other electronic devices. Channel coding and error correction techniques can be used to reduce errors in received signals introduced from distortion and other disturbances. Such coding and error correction can be implemented using an encoder and a decoder at the ends of the transmission channel.
One increasingly popular communication standard is 10 Gigabit Ethernet, with a nominal data rate of 10 Gbit/s. One standard of 10 Gigabit Ethernet is IEEE 1OGBASE-T, used to provide 10 gigabit per second connections over unshielded or shielded twisted pair copper wires. The wire-level modulation for 1OGBASE-T is a Tomlinson-Harashima Precoded (THP) version of pulse-amplitude modulation with 16 discrete levels (PAM-16), encoded in a two-dimensional constellation pattern known as 128-DSQ (Double Square QAM).
As shown in FIG. 1, the 1OGBASE-T transmission frame is based on a (2048, 1723) Low Density Parity Check (LDPC) code, i.e. 2048 total bits with 1723 data bits and 325 check bits per frame, where the check bits are used to fix or detect errors in the frame. This is used in combination with the 128-DSQ synthetic constellation that uses a combination of coded and uncoded bits to transmit information. As shown, Ethernet data is retrieved in fifty 65-bit blocks and is scrambled, e.g. provided to a self-synchronizing scrambler to scramble the bits. To provide a modest degree of error detection capability for the uncoded information, a set of eight CRC-8 check bits are provided on one end of the frame and an auxiliary channel bit provided on the other end, creating 3259 bits in the frame payload. The payload is then divided up into 1723 bits for the LDPC coder, and 1536 uncoded bits (3×512) that are not coded by the LDPC coder. The coded LDPC check bits (325 bits) are added to the end of the payload. The LDPC block size after coding is 2048 total bits (4×512).
The resulting frame is mapped to 128-DSQ symbols, and the resulting DSQ symbols are then precoded using THP. Each of these 512 128-DSQ symbols are then transmitted as a pair of PAM-16 symbols (x-axis and y-axis), to create 1024 symbols (3584 bits). The constellation for the 128-DSQ symbols is shown in FIG. 2, and consists of 8 cosets (regions), each coset containing 16 points. The coset label contains the 3 uncoded bits as shown in FIG. 2, and the points within the coset contain the 4 coded bits protected using the LDPC block code. The labeling of the points in the coset (the coset elements) conveying the 4 coded bits is shown in FIG. 3.
A receiver unscrambles a received frame and decodes the coded bits. Any of several decoding algorithms for LDPC codes can be used in the receiver to decode the received coded bits. For example, iterative decoders are often used to converge on a correct decoded value. In one implementation, LDPC decoding is performed in the receiver using a soft-decision, message-passing algorithm. The bits are treated as continuous variables which represent the probability of the value being a 0 or a 1, and the continuous variables are represented in the decoding algorithm as Log Likelihood Ratios (LLRs). The message passing algorithm sets the variable nodes to the soft receive LLRs, calculates the syndrome LLRs given the variable LLRs, updates the variable LLRs with the new syndrome information, and iterates in this same way until a convergence is reached (e.g., check bits are all zero). Using the 1OGBASE-T transmission scheme, it is possible to have very low bit error rates that come very close to the Shannon limit of the communication channel.
While the proposed 1OGBASE-T transmission scheme works well for its intended applications, bit errors may occur in situations involving, for example, noise spikes that can impact a given symbol. The coded bits may generally remain valid, but the uncoded bits are susceptible to the spikes and may result in the coded bits being assigned to an incorrect coset. Further, since the uncoded bits are protected by a CRC-8 error detection algorithm, detection of an error results in discarding the entire frame. This may undesirably impact link performance, especially for TCP-based traffic.
Accordingly, systems and methods are needed that provide the capability to correct errors in block-coded data frames, such as high-speed ethernet systems, with error detection codes.